package com.ruoyi.make.mapper;

import java.util.List;

import com.ruoyi.make.domain.*;
import org.springframework.data.repository.query.Param;

/**
 * 生产工单Mapper接口
 * 
 * @author ruoyi
 * @date 2024-06-26
 */
public interface ScgdProductionWorkOrderMapper 
{
    /**
     * 查询生产工单
     * 
     * @param gdCode 生产工单主键
     * @return 生产工单
     */
    public ScgdProductionWorkOrder selectScgdProductionWorkOrderByGdCode(String gdCode);

    /**
     * 查询生产工单列表
     * 
     * @param scgdProductionWorkOrder 生产工单
     * @return 生产工单集合
     */
    public List<ScgdProductionWorkOrder> findAll(ScgdProductionWorkOrder scgdProductionWorkOrder);

    /**
     * 新增生产工单
     * 
     * @param scgdProductionWorkOrder 生产工单
     * @return 结果
     */
    public int insertScgdProductionWorkOrder(ScgdProductionWorkOrder scgdProductionWorkOrder);

    /**
     * 修改生产工单
     * 
     * @param scgdProductionWorkOrder 生产工单
     * @return 结果
     */
    public int updateScgdProductionWorkOrder(ScgdProductionWorkOrder scgdProductionWorkOrder);

    /**
     * 删除生产工单
     * 
     * @param gdCode 生产工单主键
     * @return 结果
     */
    public int deleteScgdProductionWorkOrderByGdCode(String gdCode);

    /**
     * 查询工单关联Bom
     *
     * @param gdCode 生产工单主键
     * @return 结果
     */
    public List<WldaMaterialFile> selectGdAndBom(String gdCode);

    /**
     * 批量删除生产工单
     * 
     * @param gdCodes 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteScgdProductionWorkOrderByGdCodes(String[] gdCodes);

    /**
     * 批量删除生产订单
     * 
     * @param gdCodes 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteScddProductionOrderFormByDdCodes(String[] gdCodes);



    /**
     * 修改工单状态
     *
     * @param gdCode 生产工单主键
     * @return 结果
     */
    public int updateGdStatus(@Param("gdCode") String gdCode, @Param("status") String status);

    
    /**
     * 批量新增生产订单
     * 
     * @param scddProductionOrderFormList 生产订单列表
     * @return 结果
     */
    public int batchScddProductionOrderForm(List<ScddProductionOrderForm> scddProductionOrderFormList);
    

    /**
     * 通过生产工单主键删除生产订单信息
     * 
     * @param gdCode 生产工单ID
     * @return 结果
     */
    public int deleteScddProductionOrderFormByDdCode(String gdCode);


    /**
     * 查询工序
     *
     * @param cpCode 产品编码
     * @return 结果
     */
    public List<GxProcess> selectGxByCpCode(String cpCode);


    /**
     * 查询工序下的班组
     *
     * @param gxCode 产品编码
     * @return 结果
     */
     public List<BzTeamSchedule> selectBzByGxCode(String gxCode);

    /**
     * 新增报工单
     *
     * @param bgdWorkOrderForm 报工单
     * @return 结果
     */
    public int insertBgdWorkOrderForm(BgdWorkOrderForm bgdWorkOrderForm);

    /**
     * 查询报工
     *
     * @param gdCode 报工单
     * @return 结果
     */
    public List<BgdGxGcVo> selectBgdGxGcVo(String gdCode);

    /**
     * 查询物料
     *
     * @param lldh 报工单
     * @return 结果
     */
    public List<BgdGxGcVo> selectScllAndLldVo(String lldh);

    /**
     * 修改工单领料状态
     *
     * @param gdCode 报工单
     * @return 结果
     */
    public int updateLlStatus(String gdCode);
}
